//  Copyright Druid Mechanics

#pragma once

#include "CoreMinimal.h"
#include "GameplayEffectExecutionCalculation.h"
#include "ExecCalc_Damage.generated.h"

/**
 * 
 */
UCLASS()
class AURA_API UExecCalc_Damage : public UGameplayEffectExecutionCalculation
{
	GENERATED_BODY()

public:
	UExecCalc_Damage();
	void DetermineDebuff(const FGameplayEffectCustomExecutionParameters& ExecutionParams, const FGameplayEffectSpec& Spec,
	                     FAggregatorEvaluateParameters EvaluateParameters,
	                     const TMap<FGameplayTag, FGameplayEffectAttributeCaptureDefinition>& InTagsToDefs) const;
	/**
	 * FGameplayEffectCustomExecutionParameters: 表示自定义GEExec参数的结构体。不应通过引用保留它，仅在执行的作用域内使用它。
	 * FGameplayEffectCustomExecutionOutput: 表示自定义GEExec输出的结构体。
	 */
	/**
	 * Execute_Implementation:
	 * 每当所属的GE被执行时都会调用。
	 * 基本上可以随心所欲地执行任何操作，包括立即生成并执行新的修饰符。 
	 */
	virtual void Execute_Implementation(const FGameplayEffectCustomExecutionParameters& ExecutionParams,
	                                    FGameplayEffectCustomExecutionOutput& OutExecutionOutput) const override;
};
